import axios from 'axios';

import router from '@/router';


// start 全局配置

// 公共路由(网络请求地址)
axios.defaults.baseURL = `${process.env.VUE_APP_BASEURL}/`;
// 请求响应超时时间
axios.defaults.timeout = 5000;

// end 全局配置

/**
 * 前置拦截
 */
axios.interceptors.request.use(
  (config) => {
    // 本地获取token
    // const token = localStorage.getItem('token');
    let user = JSON.parse(localStorage.getItem("user") || '{}')    
    if (user) {
      // 设置请求头
      config.headers.token = `${user.token}`;
    }
    return config;
  },
  (error) => {
    Promise.reject(error);
  }
);

// start 后置拦截
const responseStrategie = {
  401: () => {
    router.push('/login');
  }
};
const responseOperation = (code) => {
  if (Object.keys(responseStrategie).includes(code)) {
    responseStrategie[code]();
  }
};

axios.interceptors.response.use(
  (response) => {
    if (response.status == 500) {
    }
    // 保存响应头token
    if (response.headers.get('token')) {
      // useUserStore().setToken(response.headers.token);
    }

    // 请求成功
    const res = response.data;
    // 后置处理
    responseOperation(res.code);
    return Promise.resolve(res);
  },
  (error) => {
    Promise.reject(error);
  }
);
// end 后置拦截

// 自定义方法

export function get(url, params = {}) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params
      })
      .then((res) => {
        return resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}

export function post(url, data) {
  return new Promise((resolve, reject) => {
    axios
      .post(url, JSON.stringify(data), {
        headers: {
          'Content-Type': 'application/json'
        }
      })
      .then((res) => {
        return resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}
